import java.util.Arrays;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 62536
 * Date: 2023-11-01
 * Time: 21:46
 */
public class Test {

    //给定一个整数数组 nums 和一个整数目标值 target，请你在该数组中找出 和为目标值 target 的那 两个 整数，并返回它们的数组下标。
    public static void main9(String[] args) {
        int[] nums = {2,7,11,15};
        int target = 9;
        for (int i = 0; i < nums.length - 1; i++) {
            if(nums[i] + nums[i+1] == target){
                System.out.println("[" + i + "," +(i+1) + "]");
                break;
            }

        }
    }
    //调整数组顺序使得奇数位于偶数之前。调整之后，不关心大小顺序。
    public static void main8(String[] args) {
        int[] arr = {1,2,3,4,5,6,8,9};
        int count = arr.length - 1;
        for (int i = 0; i < count; i++) {

            while(arr[i] %2 == 0){
                int tmp = arr[count];
                arr[count] = arr[i];
                arr[i] = tmp;
                count--;
            }

        }
        System.out.println(Arrays.toString(arr));

    }

    //给定一个大小为 n 的数组，找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
    //最优解,排序后直接返回 arr.length/2 的元素
    public static void findM(int[] arr){
        int count = 1;
        Arrays.sort(arr);
        int n = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if(arr[i] == n){
                count++;
            }else{
                if(count > arr.length/2){
                    System.out.println(n + " ");
                }
                count = 1;
                n = arr[i];
            }
        }
        if(count > arr.length/2){
            System.out.println(n + " ");
        }
    }

    public static void main7(String[] args) {
        int[] arr = {2,7,7,7,7,2,2,6,7,7,7,8,7,7};

        findM(arr);

    }

    //给你一个整数数组 arr，请你判断数组中是否存在连续三个元素都是奇数的情况：如果存在，请返回 true ；否则，返回 false 。
    public static boolean ifOdd(int[] arr){
        int n = 0;
        for (int i = 0; i < arr.length; i++) {
            if(arr[i] %2 == 1){
                n++;
            }else{
                n = 0;
            }
            if(n == 3){
                return true;
            }
        }
        return false;
    }
    public static void main6(String[] args) {
        int[] arr1 = {2,6,4,1};
        int[] arr2 = {1,2,34,3,4,5,7,23,12};
        System.out.println(ifOdd(arr1));
        System.out.println(ifOdd(arr2));

    }

    //实现一个方法 transform, 以数组为参数, 循环将数组中的每个元素 乘以 2 , 并设置到对应的数组元素上.
    public static void transform(int[] array){
        for (int i = 0; i < array.length; i++) {
            array[i] = array[i] * 2;
        }
    }
    public static void main5(String[] args) {
        int[] array = {1, 2 ,1, 4, 2};
        transform(array);
        System.out.println(Arrays.toString(array));

    }

    //求数组所有元素的和
    public static int sum(int[] arr) {
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        return sum;
    }
    public static void main4(String[] args) {
        int[] array = {1, 2 ,1, 4, 2, 9, 8, 6, 12};
        System.out.println(sum(array));
    }

    //找单身狗
    public static void main3(String[] args) {
        int[] array = {1, 2 ,1, 4, 2};
        int n = 0;
        for (int i = 0; i < array.length; i++) {
            n = n ^ array[i];
        }
        System.out.println(n);

    }

    //创建一个 int 类型的数组, 元素个数为 100, 并把每个元素依次设置为 1 - 100
    public static void main2(String[] args) {
        int[] arr = new int[100];
        for (int i = 0; i < 100; i++) {
            arr[i] = i;
        }
        System.out.println(Arrays.toString(arr));
    }
}
